import java.util.*;

public class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add(null);
        list.add("pear");
        String second = list.get(1);
        System.out.println(second);
        // 1、创建List
        List<Integer> list1 = List.of(1, 2, 5);
        System.out.println(list1);
        // 2、通过for循环和迭代器遍历List
        System.out.println(list.size());
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        // 3、通过迭代器遍历List
        for (Iterator<String> it = list.iterator(); it.hasNext();) {
            String s = it.next();
            System.out.println(s);
        }
        // 4、list和数组的转换
        Object[] array = list.toArray();
        System.out.println(Arrays.toString(array));
        // 类型不丢失
        String[] array1 = list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(array1));
        // Java 11 新特性
        String[] arr2 = list.toArray(String[]::new);
        System.out.println(Arrays.toString(arr2));
        // 数组转list
        Integer[] array12 = { 1, 2, 3 };
        List<Integer> list2 = List.of(array12);
        System.out.println(list2);

    }

}
// 常用的List操作方法一览表
// | 目的     | 方法                                          | 示例                                         |
// | ------ | ------------------------------------------- | ------------------------------------------ |
// | 尾部追加   | `boolean add(E e)`                          | `list.add("apple");`                       |
// | 指定位置插入 | `void add(int index, E e)`                  | `list.add(1, "banana");`                   |
// | 批量追加   | `boolean addAll(Collection<? extends E> c)` | `list.addAll(Arrays.asList("a", "b"));`    |
// | 删除元素   | `E remove(int index)`                       | `String old = list.remove(0);`             |
// | 删除对象   | `boolean remove(Object o)`                  | `list.remove("apple");` // 删首个匹配项          |
// | 批量删除   | `boolean removeAll(Collection<?> c)`        | `list.removeAll(Set.of("a", "b"));`        |
// | 修改元素   | `E set(int index, E element)`               | `list.set(2, "pear");`                     |
// | 随机访问   | `E get(int index)`                          | `String s = list.get(0);`                  |
// | 元素是否存在 | `boolean contains(Object o)`                | `if (list.contains("apple")) …`            |
// | 元素位置   | `int indexOf(Object o)`                     | `int idx = list.indexOf("apple");` // 首次出现 |
// | 最后一次位置 | `int lastIndexOf(Object o)`                 | `int lastIdx = list.lastIndexOf("apple");` |
